In a typical enterprise, there are different application environments. There is a production environment that is typically used to provide some sort of service to customers of the enterprise. There is a development environment that is used by application development team to develop applications that are deployed in production and other environments. There is quality assurance (QA) environment that is used by QA team for testing applications. There may be other application environments as well that are used for specific purposes.
A production application environment is typically critical to the operation of a business. Any changes to this environment go through a strict change management process to reduce impact on business operations. Development or testing activities are typically not allowed in production environment.
For an application development, a development team may need access to data (typically stored in databases but it can be stored in other forms as well). The data is usually generated by applications running in the production environment.
To enable development activities, production data needs to be periodically captured and transferred to development, QA and other environments.
Typically, each developer and each QA team member needs an independent copy of data for their work. Traditionally, each development environment is provisioned by making a copy of production data and restoring it in the target development environment. In this scheme, each development environment consumes the same amount of storage as a production environment. Also, the larger the application data is in size, the longer it takes to provision a development environment using this traditional process.
In the traditional provisioning process, many people such as storage administrators (e.g., to provision storage), server administrators (e.g., to mount storage on the target server), and network administrators (e.g., to make required network changes) need to be involved to provision each development environment. This requires handoff from one person to another and increases the time required to provision a development environment and consequently increases the time required to develop applications. This delay in application development may cost businesses dearly in a competitive environment.
Production data often contains sensitive information such as social security numbers, credit card numbers, bank account numbers etc. Often, businesses have a fiduciary duty to safeguard such information. As such, the sensitive information often needs to be either removed or masked from production data before the data is given to a development or QA team for development projects. This requires businesses to set up data masking environments, allocate storage resources for masking production data and have someone oversee the process of masking to ensure that non-authorized personnel cannot get access to sensitive data.
As described above, the traditional process of managing copies of production data involves several manual steps and is not associated with many safeguards. Proliferation of copies of production data may result in non-authorized personnel gaining access to sensitive data thereby increasing business exposure to lawsuits.
Development teams and QA teams also have a need to save their ongoing work periodically to protect them from failures. Traditionally, this is accomplished by making additional copies of originally copied but slightly modified production data. This increases storage consumption and associated overheads even further.